building_data = read.csv('data/data_train.csv', header = TRUE)
zipcode_data = read.csv('building-permit-applications-data/zipcode_data_all.csv', header = TRUE)
library(tidyverse)
## ── Attaching packages ────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✔ ggplot2 3.2.1 ✔ purrr 0.3.3
## ✔ tibble 2.1.3 ✔ dplyr 0.8.3
## ✔ tidyr 1.0.0 ✔ stringr 1.4.0
## ✔ readr 1.3.1 ✔ forcats 0.4.0
## ── Conflicts ───────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(tigris)
## To enable
## caching of data, set `options(tigris_use_cache = TRUE)` in your R script or .Rprofile.
##
## Attaching package: 'tigris'
## The following object is masked from 'package:graphics':
##
## plot
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(zipcode)
data(zipcode)
# SF zipcodes start with 94XXX
zips_sf <- zctas(cb = T, starts_with = c("94"), class = "sf") %>%
select(zip = ZCTA5CE10, geometry)
## ZCTAs can take several minutes to download. To cache the data and avoid re-downloading in future R sessions, set `options(tigris_use_cache = TRUE)`
##
|
| | 0%
|
| | 1%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|== | 4%
|
|=== | 4%
|
|=== | 5%
|
|==== | 5%
|
|==== | 6%
|
|==== | 7%
|
|===== | 7%
|
|===== | 8%
|
|====== | 8%
|
|====== | 9%
|
|====== | 10%
|
|======= | 10%
|
|======= | 11%
|
|======= | 12%
|
|======== | 12%
|
|======== | 13%
|
|========= | 13%
|
|========= | 14%
|
|========= | 15%
|
|========== | 15%
|
|========== | 16%
|
|=========== | 16%
|
|=========== | 17%
|
|=========== | 18%
|
|============ | 18%
|
|============ | 19%
|
|============= | 19%
|
|============= | 20%
|
|============= | 21%
|
|============== | 21%
|
|============== | 22%
|
|=============== | 22%
|
|=============== | 23%
|
|=============== | 24%
|
|================ | 24%
|
|================ | 25%
|
|================= | 25%
|
|================= | 26%
|
|================= | 27%
|
|================== | 27%
|
|================== | 28%
|
|=================== | 28%
|
|=================== | 29%
|
|=================== | 30%
|
|==================== | 30%
|
|==================== | 31%
|
|==================== | 32%
|
|===================== | 32%
|
|===================== | 33%
|
|====================== | 33%
|
|====================== | 34%
|
|====================== | 35%
|
|======================= | 35%
|
|======================= | 36%
|
|======================== | 36%
|
|======================== | 37%
|
|======================== | 38%
|
|========================= | 38%
|
|========================= | 39%
|
|========================== | 39%
|
|========================== | 40%
|
|========================== | 41%
|
|=========================== | 41%
|
|=========================== | 42%
|
|============================ | 42%
|
|============================ | 43%
|
|============================ | 44%
|
|============================= | 44%
|
|============================= | 45%
|
|============================== | 45%
|
|============================== | 46%
|
|============================== | 47%
|
|=============================== | 47%
|
|=============================== | 48%
|
|================================ | 48%
|
|================================ | 49%
|
|================================ | 50%
|
|================================= | 50%
|
|================================= | 51%
|
|================================= | 52%
|
|================================== | 52%
|
|================================== | 53%
|
|=================================== | 53%
|
|=================================== | 54%
|
|=================================== | 55%
|
|==================================== | 55%
|
|==================================== | 56%
|
|===================================== | 56%
|
|===================================== | 57%
|
|===================================== | 58%
|
|====================================== | 58%
|
|====================================== | 59%
|
|======================================= | 59%
|
|======================================= | 60%
|
|======================================= | 61%
|
|======================================== | 61%
|
|======================================== | 62%
|
|========================================= | 62%
|
|========================================= | 63%
|
|========================================= | 64%
|
|========================================== | 64%
|
|========================================== | 65%
|
|=========================================== | 65%
|
|=========================================== | 66%
|
|=========================================== | 67%
|
|============================================ | 67%
|
|============================================ | 68%
|
|============================================= | 68%
|
|============================================= | 69%
|
|============================================= | 70%
|
|============================================== | 70%
|
|============================================== | 71%
|
|============================================== | 72%
|
|=============================================== | 72%
|
|=============================================== | 73%
|
|================================================ | 73%
|
|================================================ | 74%
|
|================================================ | 75%
|
|================================================= | 75%
|
|================================================= | 76%
|
|================================================== | 76%
|
|================================================== | 77%
|
|================================================== | 78%
|
|=================================================== | 78%
|
|=================================================== | 79%
|
|==================================================== | 79%
|
|==================================================== | 80%
|
|==================================================== | 81%
|
|===================================================== | 81%
|
|===================================================== | 82%
|
|====================================================== | 82%
|
|====================================================== | 83%
|
|====================================================== | 84%
|
|======================================================= | 84%
|
|======================================================= | 85%
|
|======================================================== | 85%
|
|======================================================== | 86%
|
|======================================================== | 87%
|
|========================================================= | 87%
|
|========================================================= | 88%
|
|========================================================== | 88%
|
|========================================================== | 89%
|
|========================================================== | 90%
|
|=========================================================== | 90%
|
|=========================================================== | 91%
|
|=========================================================== | 92%
|
|============================================================ | 92%
|
|============================================================ | 93%
|
|============================================================= | 93%
|
|============================================================= | 94%
|
|============================================================= | 95%
|
|============================================================== | 95%
|
|============================================================== | 96%
|
|=============================================================== | 96%
|
|=============================================================== | 97%
|
|=============================================================== | 98%
|
|================================================================ | 98%
|
|================================================================ | 99%
|
|=================================================================| 99%
|
|=================================================================| 100%
head(zips_sf)
## Simple feature collection with 6 features and 1 field
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -122.4299 ymin: 37.35215 xmax: -121.9824 ymax: 37.88476
## epsg (SRID): 4269
## proj4string: +proj=longlat +datum=NAD83 +no_defs
## zip geometry
## 77 94089 MULTIPOLYGON (((-122.0411 3...
## 1287 94111 MULTIPOLYGON (((-122.4057 3...
## 1994 94703 MULTIPOLYGON (((-122.2832 3...
## 2533 94104 MULTIPOLYGON (((-122.4046 3...
## 5055 94086 MULTIPOLYGON (((-122.0581 3...
## 5336 94102 MULTIPOLYGON (((-122.4299 3...
register_google(key = 'AIzaSyDZpJXjmmjN23LleD3QYSnkiuDtvluYKcs')
basemap <- get_map(location = c(lon = -122.3999, lat = 37.7846), zoom = 9)
## Source : https://maps.googleapis.com/maps/api/staticmap?center=37.7846,-122.3999&zoom=9&size=640x640&scale=2&maptype=terrain&language=en-EN&key=xxx
ggmap(basemap) +
geom_sf(aes(fill = zip), data = zips_sf, inherit.aes = F, size = 0, alpha = 0.6) +
coord_sf(ndiscr = F) +
theme(legend.position = "none")
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.
register_google(key = 'AIzaSyDZpJXjmmjN23LleD3QYSnkiuDtvluYKcs')
basemap <- get_map(location = c(lon = -122.3999, lat = 37.7846), zoom = 12)
## Source : https://maps.googleapis.com/maps/api/staticmap?center=37.7846,-122.3999&zoom=12&size=640x640&scale=2&maptype=terrain&language=en-EN&key=xxx
zips = zipcode[zipcode$zip %in% building_data$Zipcode, ]
zips$Zipcode = zips$zip
total <- merge(zips, zipcode_data, by="Zipcode")
fin_heatmap <- ggmap(basemap, extent = "device") + stat_summary_2d(data = total, aes(x = longitude, y = latitude, z = Business.total), fun = mean, alpha = 0.6, bins = 30) + scale_fill_gradient(name = "Businesses", low = "green", high = "red")
fin_heatmap
fin_heatmap <- ggmap(basemap, extent = "device") + stat_summary_2d(data = total, aes(x = longitude, y = latitude, z = Restaurant.total), fun = mean, alpha = 0.6, bins = 30) + scale_fill_gradient(name = "Restaurants", low = "green", high = "red")
fin_heatmap
fin_heatmap <- ggmap(basemap, extent = "device") + stat_summary_2d(data = total, aes(x = longitude, y = latitude, z = Fire.total), fun = mean, alpha = 0.6, bins = 30) + scale_fill_gradient(name = "Fires", low = "green", high = "red")
fin_heatmap